<?php

$m = Model::getInstance();

YuppLoader::load('core.mvc.form', 'YuppForm2');

?>
<html>
  <head>
    <!-- TODO: el estilo dependera del layout seleccionado -->
    <style>
      /* Para que el document padre sepa que tamanio darle a la modal, se debe especificar en CSS */
      body {
         /* width: 250px;*/
         /*height: 235px;*/
         padding: 5px;
      }
      .zone {
        background-color: #ffcc00;
      }
      .moduleContainer {
        background-color: #ccff00;
        margin: 1px;
        border: 1px solid #000;
        padding: 5px; /* para que se vea el containder verde */
      }
      .moduleTopBar {
        background-color: #aaccff;
        padding: 3px;
      }
      .moduleActions {
        background-color: #ccddff;
        padding: 3px;
        display: inline-block;
        float: right;
      }
      .moduleContent {
        background-color: #ccffff;
        padding: 3px;
      }
    </style>
    <?php echo h('js', array('app'=>'cms2', 'name'=>'jquery/jquery-1.5.1.min')); ?>
    <script type="text/javascript">

      $(document).ready( function() {
        
        //parent.modalReady(document); // Notifica para que el parent actualice el tamanio del iframe
        parent.modal.modal('update');
      });
      
      var callback = function(res, status, response) {
        
        var moduleClass = $('select[name=class]').val();
        var zoneName = $('select[name="zone"]').val(); // La zona seleccionada por el usuario
        
        // Llamo al servidor para que me de el HTML del nuevo modulo
        $.ajax({
          url: '<?php echo h('url', array('controller'=>'cms', 'action'=>'moduleContainer')); ?>',
          data: {
            class: moduleClass,
            id: res.id, // id del modulo creado
            pageId: res.pageId, // id de la pagina (se necesita para hacer display del moduleContainer)
            zone: zoneName
          },
          success: function (newModule, status) {
              
            // Agrega el modulo al DOM
            var zone = $('#'+zoneName, parent.document); // El id del elemento DOM de la zona es su nombre
            
            
            // Mete el modulo al final de la zona
            // Tambien ejecuta todo el JS que tenga adentro
            // Hay que tener cuidado por que el contexto de ejecucion de ese
            // JS es esta ventana modal (el iframe), no la ventana padre.
            zone.append( newModule );
            
            
            // Intenta cargar el javascript de edicion para la clase de modulo creada.
            // Asi se habilitan las acciones por ajax en la edicion del modulo.
            // loadLib esta definida en displayPage.view.php
            parent.loadLib(moduleClass);
            
        
            // Cierro la ventana modal en la que me estoy mostrando
            var modal = $('#modal', parent.document); // Selecciona ventana
            /*
              modal.fadeOut('slow');                    // Efecto fadeout
              modal.css('display', 'none');             // Oculto la ventana con CSS
              modal.children('iframe').attr('src', ''); // Borro la pagina cargada en el iframe
            */
            // oneliner...
            modal.fadeOut('slow').css('display', 'none').children('iframe').attr('src', '');
          }
        });
      };
    </script>
  </head>
  <body>
    <?php
      // TODO: volver deberia ir a la pagina desde la que se ejecuto el edit...
      $f = new YuppForm2(array("action"=>"createModule", "isAjax"=>true, "ajaxCallback"=>"callback"));
      $f->add( YuppForm2::hidden(array('name'=>"pageId", 'value'=>$m->get('pageId'))) )
        ->add( YuppForm2::text(array('name'=>"title", 'value'=>$m->get('title'), 'label'=>"Titulo")) )
        ->add( YuppForm2::check(array('name'=>"showContainer", 'on'=>$m->get('showContainer'), 'label'=>"Mostrar contenedor")) )
        ->add( YuppForm2::check(array('name'=>"showInAllPages", 'on'=>$m->get('showInAllPages'), 'label'=>"Mostrar en todas las paginas")) )
        ->add( YuppForm2::select(array('name'=>"class", 'value'=>$m->get('class'), 'options'=>$m->get('classes'), 'label'=>'Tipo')) )
        ->add( YuppForm2::select(array('name'=>"zone", 'value'=>$m->get('zone'), 'options'=>$m->get('zones'), 'label'=>"Zona")) )
        ->add( YuppForm2::submit(array('name'=>'doit', 'label'=>"Crear")) );
      YuppFormDisplay2::displayForm( $f );
    ?>
  </body>
</html>